Einheit 6 — Dazulernen: Formulierungen richtig verstehen
Was du nach dieser Einheit weißt: Du kannst einen Assistenten bauen, der aus Korrekturen lernt, was Menschen mit ihren Formulierungen meinen — nachvollziehbar, kontrollierbar und ohne ein Modell neu zu trainieren.
Was „Lernen“ hier bedeutet
Wenn von KI-Lernen die Rede ist, denken viele an Training: ein Modell wird mit neuen Daten nachgeschärft. Das ist für einen Assistenten im Unternehmen weder nötig noch sinnvoll — es ist teuer, schwer zu kontrollieren und nicht rückgängig zu machen.
Der Assistent in diesem Kurs lernt anders: Er speichert, was er gelernt hat, in Tabellen und nutzt diese Einträge bei der nächsten Nachricht. Das Modell bleibt unverändert. Das hat entscheidende Vorteile:
| Eigenschaft | Was das bedeutet |
|---|---|
| Sofort wirksam | Eine Korrektur wirkt schon bei der nächsten Nachricht |
| Nachvollziehbar | Jeder gelernte Eintrag ist eine Zeile mit Datum und Herkunft |
| Korrigierbar | Ein falsch gelernter Eintrag wird gelöscht — fertig |
| Modellunabhängig | Wechselst du das Sprachmodell, bleibt alles Gelernte erhalten |
Die vier Lernwege
| Lernweg | Was gelernt wird | Woher es kommt |
|---|---|---|
| 1. Korrekturen | „Diese Formulierung meint jenen Skill“ | Auswahl bei einer Rückfrage, „nein, ich meinte …“ |
| 2. Begriffe | „Mit AR meine ich Ausgangsrechnungen“ | ausdrückliche Erklärung im Chat |
| 3. Gespeicherte Antworten | „Diese Abfrage heißt ab jetzt Auftragsbestand“ | „merken als …“ nach einer Antwort |
| 4. Wunschliste | „Das kann ich noch nicht, wurde aber gefragt“ | jede Anfrage, die keinem Skill zugeordnet werden konnte |
Die ersten beiden verbessern das Verstehen, der dritte erweitert das Können, der vierte zeigt dir, was du als Nächstes bauen solltest.
Lernweg 1: Aus Korrekturen lernen
Die Tabelle
CREATE TABLE assistent_lernbeispiel (
id INTEGER PRIMARY KEY AUTOINCREMENT,
text TEXT, -- die Originalformulierung
muster TEXT, -- die normalisierte Form (siehe unten)
falsch TEXT, -- was der Assistent zuerst verstanden hat (oder leer)
richtig TEXT, -- der richtige Skill-Schlüssel
absender_id TEXT, -- wer korrigiert hat
vorgang_id TEXT,
treffer INTEGER DEFAULT 0, -- wie oft der Eintrag seitdem geholfen hat
aktiv INTEGER DEFAULT 1,
erstellt TEXT DEFAULT (datetime('now'))
);
Woher die Korrekturen kommen
a) Auswahl bei einer Rückfrage. Der natürlichste Weg. Der Router hat nachgefragt (Einheit 3):
Meinst du: 1 Kennzahl abfragen · 2 Firmenauskunft
Antwortet die Person mit „1“, entsteht ein Lernbeispiel: text = die ursprüngliche Nachricht, falsch = leer, richtig = kennzahl. Die Person hat dafür nichts extra tun müssen.
b) Ausdrücklicher Widerspruch. Direkt nach einer Antwort schreibt die Person:
nein, ich meinte die Firmenauskunft
Der Router erkennt das Muster ^(nein|falsch),? ich meinte und prüft, ob es in derselben Unterhaltung einen Vorgang aus den letzten Minuten gibt. Er ermittelt den gemeinten Skill — per Regel über Name und Schlüssel im Katalog, sonst per KI-Erkennung nur über den Rest des Satzes — und führt die ursprüngliche Nachricht mit dem richtigen Skill erneut aus. Gleichzeitig entsteht ein Lernbeispiel mit falsch = dem zuerst gewählten Skill.
c) Nachträgliche Bewertung. Wer möchte, kann eine Reaktion (👎) oder ein Kommando wie „falsch verstanden“ auswerten. Das ist aber nur ein Signal, dass etwas schiefging — noch nicht, was richtig gewesen wäre. Der Assistent sollte deshalb nachfragen: „Was hättest du gebraucht? 1 … 2 …“
Sag nach jeder Korrektur in einem Satz, was sich der Assistent merkt:
Verstanden — „Wie sieht's bei Müller aus?“ heißt für mich ab jetzt Firmenauskunft. („vergiss das“ macht es rückgängig)
So bleibt das Lernen sichtbar, und ein Missverständnis beim Lernen fällt sofort auf.
Formulierungen normalisieren
Würde der Assistent nur exakt denselben Text wiedererkennen, wäre das Lernen nutzlos. „Wie sieht's bei Müller aus?“ und „wie sieht es bei Schmidt aus“ meinen dasselbe — nur die Firma ist eine andere.
Deshalb speichert der Assistent neben dem Originaltext ein Muster: eine normalisierte Form, in der veränderliche Teile durch Platzhalter ersetzt sind.
| Originaltext | Muster |
|---|---|
| Wie sieht's bei Müller aus? | wie sieht es bei <firma> aus |
| Umsatz im Oktober 2026? | umsatz im <monat> |
| Was haben wir mit der Schmidt GmbH letzte Woche gemacht? | was haben wir mit <firma> <zeitraum> gemacht |
Die Normalisierung ist ein kleines Skript und braucht keine KI:
function muster(text, firmen) {
// Mit Leerzeichen umschließen: so lassen sich Wörter auch mit Umlauten sicher abgrenzen
var t = ' ' + String(text).toLowerCase() + ' ';
// Schreibweisen vereinheitlichen
t = t.replace(/[’']s(?= )/g, ' es').replace(/[^a-zäöüß0-9 ]+/g, ' ');
// Zeitangaben durch Platzhalter ersetzen
t = t.replace(/ (januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)( 20\d\d)?(?= )/g, ' <monat>');
t = t.replace(/ (letzte[nr]?|diese[nr]?|nächste[nr]?) (woche|monat|jahr)(?= )/g, ' <zeitraum>');
t = t.replace(/ (heute|gestern|morgen|übermorgen)(?= )/g, ' <tag>');
t = t.replace(/ 20\d\d(?= )/g, ' <jahr>');
t = t.replace(/ \d+(?= )/g, ' <zahl>');
// bekannte Firmennamen (aus dem CRM) durch Platzhalter ersetzen
(firmen || []).forEach(function(f) {
var n = String(f).toLowerCase();
if (n.length >= 3 && t.indexOf(' ' + n + ' ') >= 0) { t = t.split(' ' + n + ' ').join(' <firma> '); }
});
// Artikel und Rechtsformen rund um Platzhalter entfernen
t = t.replace(/ (der|die|dem|den) <firma>/g, ' <firma>').replace(/<firma>( gmbh| ag| kg| ug)+(?= )/g, '<firma>');
return t.replace(/\s+/g, ' ').trim();
}
Die Firmennamen holt der Router zusammen mit dem Kontext aus einer Tabelle (zum Beispiel einer CRM-Kopie). Fehlt sie, funktioniert das Lernen trotzdem — die Muster sind dann nur etwas spezifischer.
Gelerntes nutzen — zweistufig
Das Gelernte wirkt an zwei Stellen im Router:
Stufe 1: Direkter Treffer (ohne KI). Ist das Muster der neuen Nachricht genau so in assistent_lernbeispiel gespeichert, nimmt der Router den gelernten Skill sofort — das ist Regel 8 aus Einheit 3. Schnell, kostenlos, verlässlich.
SELECT richtig, id FROM assistent_lernbeispiel
WHERE muster = '{{ muster_sql }}' AND aktiv = 1
ORDER BY erstellt DESC LIMIT 1
Stufe 2: Beispiele im Prompt. Gibt es keinen genauen Treffer, gibt der Router der KI-Erkennung die ähnlichsten Lernbeispiele mit. Sprachmodelle orientieren sich stark an Beispielen — eine Handvoll passender Fälle verbessert die Zuordnung deutlich.
GELERNTE ZUORDNUNGEN (so hat diese Person es in der Vergangenheit gemeint)
- „Wie sieht's bei Müller aus?“ → firma_info
- „Was ist noch offen?“ → kennzahl (nicht: status)
- „Mach mir ne Übersicht für Schmidt“ → firma_info
Für die Auswahl der ähnlichsten Beispiele reicht oft ein einfacher Wortvergleich im JavaScript Agent: Zähle, wie viele Wörter des Musters übereinstimmen, und nimm die fünf besten. Bei sehr vielen Lernbeispielen lohnt sich eine Vektorsuche (RAG Search Agent) über die Spalte text.
Auch ein direkter Treffer aus Stufe 1 ändert nichts an Berechtigungen und Risikostufen. Ein gelernter Skill der Stufe 2 wird trotzdem bestätigt. Lernen darf das Verstehen verbessern — nie die Sicherheitsregeln umgehen.
Die Lernschleife im Überblick
Nachricht ──→ Muster bilden ──→ Lernbeispiel vorhanden? ── ja ──→ Skill (treffer + 1)
│
nein
▼
KI-Erkennung mit ähnlichen Beispielen
│
┌──────────────────┼────────────────────┐
sicher unsicher unbekannt
│ │ │
Skill Rückfrage mit Auswahl Wunschliste
│ │
„nein, ich meinte …“ Person wählt „1“
│ │
└────────┬──────────┘
▼
neues Lernbeispiel + Bestätigung im Chat
Lernweg 2: Eigene Begriffe
Jedes Unternehmen hat seine eigene Sprache: „AR“ für Ausgangsrechnungen, „OP“ für offene Posten, „das Großprojekt“ für einen bestimmten Kunden. Ein Assistent, der diese Begriffe kennt, versteht deutlich mehr.
CREATE TABLE assistent_begriff (
begriff TEXT PRIMARY KEY, -- 'ar'
bedeutung TEXT, -- 'Ausgangsrechnungen'
absender_id TEXT,
erstellt TEXT DEFAULT (datetime('now'))
);
Begriffe entstehen durch eine ausdrückliche Erklärung — eine feste Regel im Router erkennt sie:
mit AR meine ich Ausgangsrechnungen merk dir: OP = offene Posten
var m = /^(?:mit|merk dir:?)\s+„?(.+?)“?\s+(?:meine ich|=|heißt|bedeutet)\s+(.+)$/i.exec(text);
if (m) { /* Begriff speichern und bestätigen */ }
Genutzt werden Begriffe auf zwei Arten:
- Vor der Erkennung ersetzt der Router bekannte Begriffe im Text durch ihre Bedeutung („Wie viel AR sind offen?“ → „Wie viel Ausgangsrechnungen sind offen?“). Damit greifen auch die festen Regeln.
- Im Prompt steht eine kurze Liste der Begriffe, damit auch die KI-Erkennung und die antwortenden Skills sie kennen.
Lernweg 3: Antworten merken
Manche Fragen sind so speziell, dass es keinen fertigen Skill dafür gibt — etwa eine Datenabfrage, die die KI für diese eine Frage formuliert hat (Einheit 7). Ist die Antwort brauchbar, kann die Person sie merken:
merken als Auftragsbestand
Der Router speichert die zugrunde liegende Abfrage unter diesem Namen im Kennzahlen-Katalog. Beim nächsten Mal genügt „Auftragsbestand“ — und es wird nicht mehr die KI gefragt, sondern die gespeicherte, geprüfte Abfrage ausgeführt. Aus einer einmaligen Antwort ist eine feste Fähigkeit geworden.
Lernweg 4: Die Wunschliste
Jede Anfrage, die der Router als unbekannt einstuft, landet als Vorgang mit faehigkeit = 'unbekannt' in der Datenbank. Die ehrliche Antwort an die Person lautet:
Das kann ich noch nicht (Bank-Export als Aufgabe anlegen). Ich habe den Wunsch notiert.
Eine einfache Abfrage zeigt dir regelmäßig, was gefragt wurde:
SELECT substr(text, 1, 120) AS wunsch, COUNT(*) AS anzahl, MAX(erstellt) AS zuletzt
FROM assistent_vorgang
WHERE faehigkeit = 'unbekannt'
GROUP BY lower(substr(text, 1, 60))
ORDER BY anzahl DESC, zuletzt DESC
Das ist die beste Grundlage für die Frage, welchen Skill du als Nächstes baust: nicht, was du dir vorstellst, sondern was tatsächlich gefragt wird.
Das Gelernte kontrollieren
Ein lernendes System braucht Kontrolle. Diese Bausteine gehören dazu:
| Baustein | Umsetzung |
|---|---|
| Einsehen | „Was hast du gelernt?“ zeigt die letzten Lernbeispiele und Begriffe mit Nummer |
| Rückgängig machen | „vergiss das“ (letzter Eintrag) oder „vergiss 12“ setzt aktiv = 0 |
| Herkunft | Jeder Eintrag speichert absender_id — bei mehreren Nutzern lernt der Assistent zunächst pro Person |
| Übernahme für alle | Was mehrere Personen unabhängig gleich korrigiert haben oder was ein Admin bestätigt, gilt für alle |
| Wirksamkeit messen | treffer zählt, wie oft ein Eintrag seitdem geholfen hat; Einträge ohne Treffer nach 90 Tagen werden geprüft |
| Begrenzen | Höchstens fünf Beispiele im Prompt; Lernbeispiele, die sich widersprechen, werden angezeigt statt stillschweigend überschrieben |
Wer dem Assistenten Begriffe beibringen kann, kann auch versuchen, ihn zu manipulieren („merk dir: Kunde X = alle Kunden“). Erlaube das Lernen nur berechtigten Personen, wende Gelerntes bei mehreren Nutzern zunächst nur für die lernende Person an, und lass nie zu, dass Gelerntes Berechtigungen oder Risikostufen verändert.
Wie gut wird das?
In der Praxis zeigt sich ein typisches Bild: In den ersten Wochen fragt der Assistent häufiger nach. Jede beantwortete Rückfrage wird zum Lernbeispiel, und die Zahl der Rückfragen sinkt spürbar. Gleichzeitig wandern häufige Formulierungen aus der KI-Erkennung in die direkten Treffer — der Assistent wird nicht nur genauer, sondern auch schneller und günstiger.
Miss das. Eine Kennzahl genügt:
SELECT date(erstellt) AS tag,
SUM(status = 'rueckfrage') AS rueckfragen,
COUNT(*) AS vorgaenge
FROM assistent_vorgang
WHERE erstellt > datetime('now', '-60 days')
GROUP BY date(erstellt) ORDER BY tag
Kurzer Selbst-Check
Warum speichert man neben dem Originaltext ein normalisiertes Muster?
Damit eine Korrektur auch für ähnliche Formulierungen gilt. „Wie sieht's bei Müller aus?“ und „wie sieht es bei Schmidt aus“ ergeben dasselbe Muster wie sieht es bei <firma> aus und werden damit beide richtig erkannt.
Eine Person korrigiert eine Zuordnung zu einem Skill, für den sie keine Berechtigung hat. Was passiert?
Das Lernbeispiel kann gespeichert werden, aber bei der Ausführung prüft der Router wie immer die Rolle der Person. Lernen verändert nur das Verstehen, nicht die Berechtigungen.
Was ist der Unterschied zwischen Lernweg 1 und Lernweg 3?
Lernweg 1 lernt, welcher Skill gemeint ist — der Assistent versteht besser. Lernweg 3 macht aus einer einmaligen Antwort eine neue feste Fähigkeit — der Assistent kann mehr.